package gui_TJCPS;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;

public class PainelEsquerdo extends JPanel implements ActionListener{
	private JButton[] botoesSecoes;
	private JButton botaoDescer;
	private JButton botaoSubir;
	private final int larguraPainelEsquerdo = 180;
	private final int alturaPainelEsquerdo = 380;
	private final int coordenadaXBotoesSecao = 10;
	private int larguraBotaoSecao;
	private int alturaBotaoSecao;
	private PainelPrincipal painelPrincipal;
	private String[] nomeDasSecoes;
	private int quantidadeDeBotoesVisiveis;	
	private JButton botaoVoltarTelaInicial;
	public EstadoPainelEsquerdo estadoPainelEsquerdo;


	public PainelEsquerdo(String[] secoes, PainelPrincipal painel){
		super();
		this.estadoPainelEsquerdo = EstadoPainelEsquerdo.MENU;
		this.nomeDasSecoes = secoes;
		this.painelPrincipal = painel;
		this.setLayout(null);
		this.setBackground(Color.BLACK);
		//this.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED, null, Color.WHITE, Color.WHITE, Color.WHITE));
		this.setSize(this.larguraPainelEsquerdo, this.alturaPainelEsquerdo);

		this.botoesSecoes = new JButton[secoes.length];
		this.inicializarBotoes(secoes, painel);
		this.exibirBotoes();

	}

	public void mudarIdiomaBotoes(String[] secoes){
		
		for(int i = 0; i < secoes.length; i++){
			this.botoesSecoes[i].setText(secoes[i]);
		}

	}

	private void inicializarBotoes(String[] secoes, PainelPrincipal painel) {
		ImageIcon botaoNaoPressionado = new ImageIcon(getClass().getResource("/imagens/botaoPadraoPainelEsquerdoNaoPressionado.PNG"));
		ImageIcon botaoPressionado = new ImageIcon(getClass().getResource("/imagens/botaoPadraoPainelEsquerdoPressionado.PNG"));
		ImageIcon botaoSelecionado = new ImageIcon(getClass().getResource("/imagens/botaoPadraoPainelEsquerdoPressionado.PNG"));

		this.alturaBotaoSecao = botaoNaoPressionado.getIconHeight();
		this.larguraBotaoSecao = botaoNaoPressionado.getIconWidth();

		for(int i = 0; i < secoes.length; i++){
			this.botoesSecoes[i] = new JButton(secoes[i], botaoNaoPressionado);
			this.botoesSecoes[i].setForeground(Color.WHITE);
			this.botoesSecoes[i].setSelectedIcon(botaoSelecionado);
			this.botoesSecoes[i].setPressedIcon(botaoPressionado);
			this.botoesSecoes[i].setFont(painel.getFonteBotoes());
			this.botoesSecoes[i].setBorder(null);
			this.botoesSecoes[i].setIconTextGap(-this.larguraBotaoSecao + 20);
		}
		//botao Voltar "Michelli" escrito nele
		this.botaoVoltarTelaInicial = new JButton();
		this.botaoVoltarTelaInicial.setBackground(Color.white);
		this.botaoVoltarTelaInicial.setIcon(new ImageIcon(getClass().getResource("/imagens/botaoMichelli.png")));
		this.botaoVoltarTelaInicial.setBounds(10, 330, this.botaoVoltarTelaInicial.getIcon().getIconWidth(),this.botaoVoltarTelaInicial.getIcon().getIconHeight());
		this.botaoVoltarTelaInicial.setBorder(null);
		this.botaoVoltarTelaInicial.addActionListener(this);
		this.botaoVoltarTelaInicial.setVisible(true);
		this.add(this.botaoVoltarTelaInicial);
	}

	private void exibirBotoes() {
		int coordenada_y = 10;
		if(this.botoesSecoes.length < 5){
			for (int i = 0; i < this.botoesSecoes.length; i++) {
				this.botoesSecoes[i].setBounds(10,coordenada_y,this.botoesSecoes[i].getIcon().getIconWidth(),this.botoesSecoes[i].getIcon().getIconHeight());
				coordenada_y+= 67;
				this.botoesSecoes[i].addActionListener(this);
				this.botoesSecoes[i].setVisible(true);
				this.add(this.botoesSecoes[i]);
			}
		}
		else{
			for(int i = 0; i < 4; i++) {
				this.botoesSecoes[i].setBounds(10,coordenada_y,this.botoesSecoes[i].getIcon().getIconWidth(),this.botoesSecoes[i].getIcon().getIconHeight());
				coordenada_y+= 67;
				this.botoesSecoes[i].addActionListener(this);
				this.botoesSecoes[i].setVisible(true);
				this.quantidadeDeBotoesVisiveis++;
				this.add(this.botoesSecoes[i]);
			}
			for(int i = 4; i < this.botoesSecoes.length; i++){
				this.botoesSecoes[i].setBounds(10,coordenada_y,this.botoesSecoes[i].getIcon().getIconWidth(),this.botoesSecoes[i].getIcon().getIconHeight());
				coordenada_y+= 67;
				this.botoesSecoes[i].addActionListener(this);
				this.botoesSecoes[i].setVisible(false);
				this.botoesSecoes[i].setEnabled(false);
				this.botoesSecoes[i].setVisible(false);
				this.add(this.botoesSecoes[i]);
			}
			ImageIcon setaPraBaixo = new ImageIcon(getClass().getResource("/imagens/botaoSetaPraBaixo.PNG"));
			ImageIcon setaDesabilitada = new ImageIcon(getClass().getResource("/imagens/botaoSetaDesabilitado.PNG"));
			this.botaoDescer = new JButton(setaPraBaixo);
			this.botaoDescer.setBounds(20,260,50,50);
			this.botaoDescer.setBorder(null);
			this.botaoDescer.setDisabledIcon(setaDesabilitada);
			this.botaoDescer.addActionListener(this);
			this.add(this.botaoDescer);

			ImageIcon setaPraCima = new ImageIcon(getClass().getResource("/imagens/botaoSetaPraCima.PNG"));
			this.botaoSubir = new JButton(setaPraCima);//colocar uma imagem toda Preta!!
			this.botaoSubir.setBounds(100,260,50,50);
			this.botaoSubir.setBorder(null);
			this.botaoSubir.setLayout(null);
			this.botaoSubir.setEnabled(false);
			this.botaoSubir.setDisabledIcon(setaDesabilitada);
			this.botaoSubir.addActionListener(this);
			this.add(this.botaoSubir);
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg) {
		JanelaPrincipal.esconderListaPedidos();
		if(arg.getSource() == this.botaoDescer){
			this.acaoBotaoDescer();
		}else if (arg.getSource() == this.botaoSubir){
			this.acaoBotaoSubir();
		}else if(arg.getSource() == this.botaoVoltarTelaInicial){
			PainelSecao.mudarDescricao();
			this.painelPrincipal.mudarBotoes();
			this.painelPrincipal.acaoBotaoVoltarMichelli();
		}
		else{//clicou numa secao tal, qualquer...
			if(estadoPainelEsquerdo == EstadoPainelEsquerdo.LISTA){
				this.painelPrincipal.getJanelaInicial().exibirPainelPrincipal();
				estadoPainelEsquerdo = EstadoPainelEsquerdo.MENU;
			}
			for(int i = 0; i < this.botoesSecoes.length;i++){
				if(arg.getSource() == this.botoesSecoes[i]){
				//	this.painelPrincipal.exibirSecao(this.botoesSecoes[i].getText());
					this.painelPrincipal.exibirSecao(this.botoesSecoes[i].getText(),i);
				}
			}
		}

	}

	public void acaoBotaoDescer(){
		System.out.println(quantidadeDeBotoesVisiveis);
		if(this.quantidadeDeBotoesVisiveis == 4){
			for(int i = 0; i < this.botoesSecoes.length; i++){
				this.botoesSecoes[i].setBounds(this.botoesSecoes[i].getX(), this.botoesSecoes[i].getY()-67, this.botoesSecoes[i].getWidth(), this.botoesSecoes[i].getHeight());

				if(this.botoesSecoes[i].isEnabled()){
					if(this.botoesSecoes[i].getY() <= 0){
						this.botoesSecoes[i].setEnabled(false);
						this.botoesSecoes[i].setVisible(false);
						this.quantidadeDeBotoesVisiveis--;
					}
				}
				else if(!this.botoesSecoes[i].isEnabled()){
					if(this.botoesSecoes[i].getY() >= 145){
						this.botoesSecoes[i].setVisible(true);
						this.botoesSecoes[i].setEnabled(true);
						this.quantidadeDeBotoesVisiveis++;
					}
				}
				this.botaoSubir.setEnabled(true);
				this.botaoSubir.setVisible(true);
			}
			if(this.quantidadeDeBotoesVisiveis == 3){
				this.botaoDescer.setVisible(false);
				this.botaoDescer.setEnabled(false);
				this.botaoSubir.setVisible(true);
				this.botaoSubir.setEnabled(true);
			}
		}
	}

	private void acaoBotaoSubir(){
		System.out.println(quantidadeDeBotoesVisiveis);
		if(this.quantidadeDeBotoesVisiveis >=3 && !this.botoesSecoes[0].isEnabled()){
			System.out.println(1);
			for (int i = 0; i < this.botoesSecoes.length; i++) {
				System.out.println(2);
				this.botoesSecoes[i].setBounds(this.botoesSecoes[i].getX(), this.botoesSecoes[i].getY()+67, this.botoesSecoes[i].getWidth(), this.botoesSecoes[i].getHeight());
				if(this.botoesSecoes[i].isEnabled()){
					if(this.botoesSecoes[i].getY() > 211){
						this.botoesSecoes[i].setEnabled(false);
						this.botoesSecoes[i].setVisible(false);
						this.quantidadeDeBotoesVisiveis--;
					}
				}else if(!this.botoesSecoes[i].isEnabled()){
					if(this.botoesSecoes[i].getY() >= 0 && this.botoesSecoes[i].getY() < 211){
						this.botoesSecoes[i].setVisible(true);
						this.botoesSecoes[i].setEnabled(true);
						this.quantidadeDeBotoesVisiveis++;
					}
				}
				this.botaoDescer.setVisible(true);
				this.botaoDescer.setEnabled(true);
			}
			if(this.quantidadeDeBotoesVisiveis == 3){
				this.botaoSubir.setVisible(false);
				this.botaoSubir.setEnabled(false);
				this.botaoDescer.setVisible(true);
				this.botaoDescer.setEnabled(true);
			}
			if(this.botoesSecoes[0].isEnabled()){
				this.botaoSubir.setVisible(false);
				this.botaoSubir.setEnabled(false);
				this.botaoDescer.setVisible(true);
				this.botaoDescer.setEnabled(true);
			}
		}
	}
}



/*

public void subirPosicaoBotoes(){
		for(int i = 0; i < this.botoesSecoes.length; i++){
			if(this.botoesSecoes[i].isEnabled()){
				if(i == this.botoesSecoes.length -1){
					//este eh o ultimo botao visivel, ou seja, tem que parar de descer
					this.botaoDescer.setEnabled(false);
				}
				else{
					this.botoesSecoes[i].setEnabled(false);
					this.botoesSecoes[i].setVisible(false);
					this.botoesSecoes[i].setBounds(this.coordenadaXBotoesSecao,this.botoesSecoes[i].getY() - 67, this.larguraBotaoSecao, this.alturaBotaoSecao);
					this.botaoSubir.setEnabled(true);
					this.botaoSubir.setVisible(true);
					//e o restante dos botoes...
					for(int j = i+1; j < this.botoesSecoes.length; j++){
						if(this.botoesSecoes[j].isEnabled()){
							this.botoesSecoes[j].setBounds(this.coordenadaXBotoesSecao,this.botoesSecoes[j].getY() - 67, this.larguraBotaoSecao, this.alturaBotaoSecao);
						}
						else{
							this.botoesSecoes[j].setBounds(this.coordenadaXBotoesSecao,this.botoesSecoes[j].getY() - 67, this.larguraBotaoSecao, this.alturaBotaoSecao);
							this.botoesSecoes[j].setEnabled(true);
							this.botoesSecoes[j].setVisible(true);
							break;
						}
					}
					break;
				}

			}
		}
	}

 */